package com.example.nonacademic_education.config;

import com.example.nonacademic_education.constant.Constant;
import com.example.nonacademic_education.util.timer.CodingJob;
import com.example.nonacademic_education.util.timer.QuartzUtil;
import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
@Slf4j
public class MyApplicationRunner implements ApplicationRunner {
    @Resource
    private QuartzUtil quartzUtil;
    @Resource
    private Scheduler scheduler;
    @Override
    public void run(ApplicationArguments args) throws Exception {
        // 在该方法中编写启动时执行的任务代码
        log.info("应用程序已启动，执行 MyApplicationRunner 中的任务...");
        //quartzUtil.add("pdf_del", Constant.CORN_PDF_DELETE);
        quartzUtil.add("pdf_del", Constant.CORN_PDF_DELETE);
        //重置编号：
        String id="coding";
        JobDetail jobDetail = JobBuilder.newJob(CodingJob.class)
                /*给当前JobDetail添加参数，K V形式*/
                .usingJobData("id", id)
                /*添加认证信息，有3种重写的方法，我这里是其中一种，可以查看源码看其余2种*/
                .withIdentity(id)
                .build();//执行
        CronTrigger trigger= TriggerBuilder.newTrigger()
                .withIdentity(id)
                .withSchedule(CronScheduleBuilder
                        .cronSchedule(Constant.CORN_CODING))
                .build();
        scheduler.scheduleJob(jobDetail, trigger);
        if (!scheduler.isShutdown()) {
            /*启动*/
            scheduler.start();
        }
        //clear codes
        if (quartzUtil.addKapchaCodeTimer("1","0 0 0/4 * * ? *")) {
            log.info("已启动验证码超时和账号封禁记录清理任务");
        }
        //backups:每月1号凌晨4点备份
        if (quartzUtil.addBackupsTimer("backups","0 0 4 1 * ? *")) {
            log.info("已启动数据库备份任务");
        }
        //linux定时任务设置:
//        0 0 4 1 * ? * /home/fxljy/mysql/shell/backup_mysql.sh
        //database backups:
//        String id1="database_backups";
//        JobDetail jobDetail1 = JobBuilder.newJob(MysqlBackups.class)
//                /*给当前JobDetail添加参数，K V形式*/
//                .usingJobData("id", id1)
//                /*添加认证信息，有3种重写的方法，我这里是其中一种，可以查看源码看其余2种*/
//                .withIdentity(id1)
//                .build();//执行
//        CronTrigger trigger1= TriggerBuilder.newTrigger()
//                .withIdentity(id1)
//                .withSchedule(CronScheduleBuilder
//                        .cronSchedule(Constant.CORN_TEST_FIVE_MIN))
//                .build();
//        scheduler.scheduleJob(jobDetail1, trigger1);
//        if (!scheduler.isShutdown()) {
//            /*启动*/
//            scheduler.start();
//        }
    }
}